app.controller('searchController',function($scope,$location,searchService){
	//定义搜索实体结构
	$scope.searchMap={'keywords':'','category':'','brand':'','spec':{},"price":'','pageNum':1,'pageSize':20,'sort':'','sortField':''};
	//搜索
	$scope.search=function(){
		//转换 pageNum 为 integer 类型，因为在页面的文本框中绑定了此参数，如果不转
		//传到后端会是 string 类型，而接收的是 integer 类型会报错
		$scope.searchMap.pageNum=parseInt($scope.searchMap.pageNum);
		searchService.search($scope.searchMap).success(
			function(response){
				$scope.resultMap=response;
				$scope.buildPageLabel();
			}
		);		
	}
	//加载查询字符串
	$scope.loadkeywords=function(){
		$scope.searchMap.keywords= $location.search()['keywords'];
		$scope.search();
	}


	// 构架分页标签栏
	$scope.buildPageLabel=function(){
		$scope.pageLabel=[];
		//显示的第一个页
		var firstPage=1;
		//显示的最后一个页
		var lastPage=$scope.resultMap.totalPages;
		//如果页总数小于 5 页，不需要判断全部显示
		if ($scope.resultMap.totalPages >5){
			if ($scope.searchMap.pageNum<=3){
				lastPage=5;
			}else if ($scope.searchMap.pageNum >= $scope.resultMap.totalPages -2){
				firstPage=$scope.resultMap.totalPages -4;
			}else{
				firstPage=$scope.searchMap.pageNum-2;
				lastPage=$scope.searchMap.pageNum+2;
			}
		}
		for (var i=firstPage;i<=lastPage;i++){
			$scope.pageLabel.push(i);
		}
	}
	//判断当前页为第一页
	$scope.isTopPage=function(){
		if($scope.searchMap.pageNum==1){
			return true;
		}else{
			return false;
		}
	}

	//判断当前页是否未最后一页
	$scope.isEndPage=function(){
		if($scope.searchMap.pageNum==$scope.resultMap.totalPages){
			return true;
		}else{
			return false;
		}
	}

	//点击页码开始搜索
	$scope.queryForPage=function(pageNum){
		if(pageNum<1 || pageNum>$scope.resultMap.totalPages){
			return;
		}
		$scope.searchMap.pageNum=pageNum;
		$scope.search();
	}

	//添加搜索项
	$scope.addSearchItem=function(key,value){
		//如果点击的是分类或者是品牌或者价格区间
		if(key=='category' || key=='brand' || key=="price"){
			$scope.searchMap[key]=value;
		}else{
			$scope.searchMap.spec[key]=value;
		}
		$scope.search();
	}
	//移除搜索项
	$scope.removeSearchItem=function(key) {
		//如果是分类或品牌或价格区间
		if (key == "category" || key == "brand" || key=="price") {
			$scope.searchMap[key] = "";
		} else {
			//否则是规格
			delete $scope.searchMap.spec[key];//移除此属性
		}
		$scope.search();
	}

	//判断关键字是不是品牌，是就隐藏品牌列表
	$scope.keywordsIsBrand=function () {
		//循环品牌列表，判断每个品牌是否和关键字中的某个子串相匹配
		for(var i=0;i<$scope.resultMap.brandList.length;i++){
			//如果包含，indexOf 方法返回索引位置，不包含返回 null
			if($scope.searchMap.keywords.indexOf($scope.resultMap.brandList[i].text)>=0){
				return true;
			}
		}
		return false;
	}

	//按照价格排序查询
	$scope.searchByPriceSort=function (sort,sortField) {
		$scope.searchMap.sort=sort;
		$scope.searchMap.sortField=sortField;
		$scope.search();
	}
});